package com.sugar.follow.up.module.business.controller.admin.patient.hl.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;

import static com.sugar.follow.up.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 化疗 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PatientHlRespVO {

    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22565")
    @ExcelProperty("ID")
    private Long id;

    @Schema(description = "就诊人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24179")
    @ExcelProperty("就诊人ID")
    private Long patientId;

    @Schema(description = "就诊人姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("就诊人姓名")
    private String patientName;

    @Schema(description = "录入医生ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2958")
    @ExcelProperty("录入医生ID")
    private Long doctorId;

    @Schema(description = "录入医生姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @ExcelProperty("录入医生姓名")
    private String doctorName;

    @Schema(description = "第几次治疗")
    @ExcelProperty("第几次治疗")
    private Integer num;

    @Schema(description = "化疗时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("化疗时间")
    @JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化（响应）
    @JsonDeserialize(using = LocalDateTimeDeserializer.class) // 反序列化（请求）
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime hlDate;

    @Schema(description = "ALT")
    @ExcelProperty("ALT")
    private String alt;

    @Schema(description = "AST")
    @ExcelProperty("AST")
    private String ast;

    @Schema(description = "Cr")
    @ExcelProperty("Cr")
    private String cr;

    @Schema(description = "BUN")
    @ExcelProperty("BUN")
    private String bun;

    @Schema(description = "PSA")
    @ExcelProperty("PSA")
    private String psa;

    @Schema(description = "睾酮")
    @ExcelProperty("睾酮")
    private String testosterone;

    @Schema(description = "WBC")
    @ExcelProperty("WBC")
    private String wbc;

    @Schema(description = "Hb")
    @ExcelProperty("Hb")
    private String hb;

    @Schema(description = "Plt")
    @ExcelProperty("Plt")
    private String plt;

    @Schema(description = "用药")
    @ExcelProperty("用药")
    private String useMedication;

    @Schema(description = "多西他赛")
    @ExcelProperty("多西他赛")
    private String dxts;

    @Schema(description = "其它")
    @ExcelProperty("其它")
    private String otherData;

    @Schema(description = "恶心-分级")
    @ExcelProperty("恶心-分级")
    private String fzyExFj;

    @Schema(description = "恶心-辅助用药")
    @ExcelProperty("恶心-辅助用药")
    private String fzyExFzyy;

    @Schema(description = "恶心-恢复")
    @ExcelProperty("恶心-恢复")
    private String fzyExHf;

    @Schema(description = "呕吐-分级")
    @ExcelProperty("呕吐-分级")
    private String fzyOtFj;

    @Schema(description = "呕吐-辅助用药")
    @ExcelProperty("呕吐-辅助用药")
    private String fzyOtFzyy;

    @Schema(description = "呕吐-恢复")
    @ExcelProperty("呕吐-恢复")
    private String fzyOtHf;

    @Schema(description = "腹泻-分级")
    @ExcelProperty("腹泻-分级")
    private String fzyFxFj;

    @Schema(description = "腹泻-辅助用药")
    @ExcelProperty("腹泻-辅助用药")
    private String fzyFxFzyy;

    @Schema(description = "腹泻-恢复")
    @ExcelProperty("腹泻-恢复")
    private String fzyFxHf;

    @Schema(description = "外周神经毒性-分级")
    @ExcelProperty("外周神经毒性-分级")
    private String fzyWzsjdxFj;

    @Schema(description = "外周神经毒性-辅助用药")
    @ExcelProperty("外周神经毒性-辅助用药")
    private String fzyWzsjdxFzyy;

    @Schema(description = "外周神经毒性-恢复")
    @ExcelProperty("外周神经毒性-恢复")
    private String fzyWzsjdxHf;

    @Schema(description = "骨髓抑制-分级")
    @ExcelProperty("骨髓抑制-分级")
    private String fzyGsyzFj;

    @Schema(description = "骨髓抑制-辅助用药")
    @ExcelProperty("骨髓抑制-辅助用药")
    private String fzyGsyzFzyy;

    @Schema(description = "骨髓抑制-恢复")
    @ExcelProperty("骨髓抑制-恢复")
    private String fzyGsyzHf;

    @Schema(description = "液体潴留-分级")
    @ExcelProperty("液体潴留-分级")
    private String fzyYtzlFj;

    @Schema(description = "液体潴留-辅助用药")
    @ExcelProperty("液体潴留-辅助用药")
    private String fzyYtzlFzyy;

    @Schema(description = "液体潴留-恢复")
    @ExcelProperty("液体潴留-恢复")
    private String fzyYtzlHf;

    @Schema(description = "其它-分级")
    @ExcelProperty("其它-分级")
    private String fzyOtherFj;

    @Schema(description = "其它-辅助用药")
    @ExcelProperty("其它-辅助用药")
    private String fzyOtherFzyy;

    @Schema(description = "其它-恢复")
    @ExcelProperty("其它-恢复")
    private String fzyOtherHf;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}
